/**
 *
 * @author DnD Binary Source
 */
package Entities;

public class Class {
    private String name; // The name of the Class
    private Book book; // The source book of the class (e.g. PHB 1, PHB 2)
    private boolean isLegal; // Defined as false for Homebrew Classes, true otherwise
    private String phrase;
    private String description;
    private String characteristics;
    private String religion;
    private String races;
    private String role; // The role of the Class (e.g. Defender, Striker)
    private String source; // The power source (e.g. Martial, Arcane etc.)
    private String keyAbilities;
    private String armorProficiency;
    private String weaponProficiency;
    private int bonusToDef;
    private int hPAt1stLvl;
    private int hPPerLvl;
    private int healingSurgePerDay;
    private SkillList trainedSkills;
    private int canTrainNSkills;
    private FeatList classFeatures; // change to class features later
    private String keyAbilitiesHybrid;
    private String armorProficiencyHybrid;
    private String weaponProficiencyHybrid;
    private int bonusToDefHybrid;
    private int hPAt1stLvlHybrid;
    private int hPPerLvlHybrid;
    private int healingSurgePerDayHybrid;

    public Class(){
        
    }
    
    // Return Class' name
    public String getName() {
        return name;
    }

    // Set Class' name
    public void setName(String name) {
        this.name = name;
    }

    // Return Class' book
    public Book getBook() {
        return book;
    }

    // Set Class' book
    public void setBook(Book book) {
        this.book = book;
    }

    // Return Class' legal or homebrew state
    public boolean isIsLegal() {
        return isLegal;
    }

    // Set Class' legal or homebrew state
    public void setIsLegal(boolean isLegal) {
        this.isLegal = isLegal;
    }

    // Return Class' phrase description
    public String getPhrase() {
        return phrase;
    }

    // Set Class' phrase description
    public void setPhrase(String phrase) {
        this.phrase = phrase;
    }

    // Return Class' description
    public String getDescription() {
        return description;
    }

    // Set Class' description
    public void setDescription(String description) {
        this.description = description;
    }

    // Return Class' characteristics description
    public String getCharacteristics() {
        return characteristics;
    }

    // Set Class' characteristics descrption
    public void setCharacteristics(String characteristics) {
        this.characteristics = characteristics;
    }

    // Return Class' religion description
    public String getReligion() {
        return religion;
    }

    // Set Class' religion description
    public void setReligion(String religion) {
        this.religion = religion;
    }

    // Return Class' races descrption
    public String getRaces() {
        return races;
    }

    // Set Class' races description
    public void setRaces(String races) {
        this.races = races;
    }

    // Return Class' role
    public String getRole() {
        return role;
    }

    // Set Class' role
    public void setRole(String role) {
        this.role = role;
    }

    // Return Class' power source
    public String getSource() {
        return source;
    }

    // Set Class' power source
    public void setSource(String source) {
        this.source = source;
    }

    // Return Class' key abilities
    public String getKeyAbilities() {
        return keyAbilities;
    }

    // Set Class' key abilities
    public void setKeyAbilities(String keyAbilities) {
        this.keyAbilities = keyAbilities;
    }

    // Return Class' armor proficiency
    public String getArmorProficiency() {
        return armorProficiency;
    }

    // Set Class' armor proficiency
    public void setArmorProficiency(String armorProficiency) {
        this.armorProficiency = armorProficiency;
    }

    // Return Class' weapons proficiency
    public String getWeaponProficiency() {
        return weaponProficiency;
    }

    // Set Class' weapons proficiency
    public void setWeaponProficiency(String weaponProficiency) {
        this.weaponProficiency = weaponProficiency;
    }

    // Return Class' bonus to def
    public int getBonusToDef() {
        return bonusToDef;
    }

    // Set Class' bonus to def
    public void setBonusToDef(int bonusToDef) {
        this.bonusToDef = bonusToDef;
    }

    // Return Class' HP at first level
    public int gethPAt1stLvl() {
        return hPAt1stLvl;
    }

    // Set Class' HP at first level
    public void sethPAt1stLvl(int hPAt1stLvl) {
        this.hPAt1stLvl = hPAt1stLvl;
    }

    // Return Class' HP per level
    public int gethPPerLvl() {
        return hPPerLvl;
    }

    /**
     * @param hPPerLvl the hPPerLvl to set
     */
    public void sethPPerLvl(int hPPerLvl) {
        this.hPPerLvl = hPPerLvl;
    }

    // Return Class' Healing Surges per day
    public int getHealingSurgePerDay() {
        return healingSurgePerDay;
    }

    /**
     * @param healingSurgePerDay the healingSurgePerDay to set
     */
    public void setHealingSurgePerDay(int healingSurgePerDay) {
        this.healingSurgePerDay = healingSurgePerDay;
    }

    // Return Class' trained Skills
    public SkillList getTrainedSkills() {
        return trainedSkills;
    }

    /**
     * @param trainedSkills the trainedSkills to set
     */
    public void setTrainedSkills(SkillList trainedSkills) {
        this.trainedSkills = trainedSkills;
    }

    // Return Class' free Skills
    public int getCanTrainNSkills() {
        return canTrainNSkills;
    }

    /**
     * @param canTrainNSkills the canTrainNSkills to set
     */
    public void setCanTrainNSkills(int canTrainNSkills) {
        this.canTrainNSkills = canTrainNSkills;
    }

    // Return Class' Class Features
    public FeatList getClassFeatures() {
        return classFeatures;
    }

    /**
     * @param classFeatures the classFeatures to set
     */
    public void setClassFeatures(FeatList classFeatures) {
        this.classFeatures = classFeatures;
    }

    // Return Class' Hybrid key abilities
    public String getKeyAbilitiesHybrid() {
        return keyAbilitiesHybrid;
    }

    /**
     * @param keyAbilitiesHybrid the keyAbilitiesHybrid to set
     */
    public void setKeyAbilitiesHybrid(String keyAbilitiesHybrid) {
        this.keyAbilitiesHybrid = keyAbilitiesHybrid;
    }

    // Return Class' Hybrid armor proficincy
    public String getArmorProficiencyHybrid() {
        return armorProficiencyHybrid;
    }

    /**
     * @param armorProficiencyHybrid the armorProficiencyHybrid to set
     */
    public void setArmorProficiencyHybrid(String armorProficiencyHybrid) {
        this.armorProficiencyHybrid = armorProficiencyHybrid;
    }

    // Return Class' Hybrid weapons proficiency
    public String getWeaponProficiencyHybrid() {
        return weaponProficiencyHybrid;
    }

    /**
     * @param weaponProficiencyHybrid the weaponProficiencyHybrid to set
     */
    public void setWeaponProficiencyHybrid(String weaponProficiencyHybrid) {
        this.weaponProficiencyHybrid = weaponProficiencyHybrid;
    }

    // Return Class' Hybrid bonus to def
    public int getBonusToDefHybrid() {
        return bonusToDefHybrid;
    }

    /**
     * @param bonusToDefHybrid the bonusToDefHybrid to set
     */
    public void setBonusToDefHybrid(int bonusToDefHybrid) {
        this.bonusToDefHybrid = bonusToDefHybrid;
    }

    // Return Class' Hybrid HP at first level
    public int gethPAt1stLvlHybrid() {
        return hPAt1stLvlHybrid;
    }

    /**
     * @param hPAt1stLvlHybrid the hPAt1stLvlHybrid to set
     */
    public void sethPAt1stLvlHybrid(int hPAt1stLvlHybrid) {
        this.hPAt1stLvlHybrid = hPAt1stLvlHybrid;
    }

    // Return Class' Hybrid HP per level
    public int gethPPerLvlHybrid() {
        return hPPerLvlHybrid;
    }

    /**
     * @param hPPerLvlHybrid the hPPerLvlHybrid to set
     */
    public void sethPPerLvlHybrid(int hPPerLvlHybrid) {
        this.hPPerLvlHybrid = hPPerLvlHybrid;
    }

    // Return Class' Hybrid Healing Surges per day
    public int getHealingSurgePerDayHybrid() {
        return healingSurgePerDayHybrid;
    }

    /**
     * @param healingSurgePerDayHybrid the healingSurgePerDayHybrid to set
     */
    public void setHealingSurgePerDayHybrid(int healingSurgePerDayHybrid) {
        this.healingSurgePerDayHybrid = healingSurgePerDayHybrid;
    }
}
